// pages/warcraft/playing/playing.js
import MyPlane from '../template-plane/template-my-plane';
import Bullet from '../template-bullet/template-bullet';
import Enemy from '../template-enemy/template-enemy';
import EnemyMiddle from '../template-enemy-middle/template-enemy-middle';

const myPlane = new MyPlane();
const global = {
    myPlane:{},
    box:{},
    enemy:{},
  };
var bulletTimer = null;
var enemyTimer = null;
var stepBulletTimer = null;
var stepEnemyTimer = null;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    myPlane:{y:400,x:150},
    bullet:[],
    enemy:[],
    enemyMiddle:[]
  },
  touchMyPlane(e){
    let x = e.touches["0"].clientX,
        y = e.touches["0"].clientY;
    x -= myPlane.width/2;
    y -= myPlane.height/2;
    x = Math.min(x,global.box.x - myPlane.width);
    x = Math.max(x,0);
    y = Math.min(y,global.box.y - myPlane.height);
    y = Math.max(y,0);
    this.setData({
      myPlane:{x,y},
      // bullet:{x:x+myPlane.width/2-1.5,y:y-myPlane.height/3+5}
    });
  },
  getClientRect(id,cb){
    let _self = this;
    let query = wx.createSelectorQuery();
    query.select(id).boundingClientRect();
    query.exec(res=>{
       cb && cb(res);
    }) 
  },
  action(){
    let _self = this;
    let count = 0;
    //生成子弹
    bulletTimer = setInterval(()=>{
      let x = this.data.myPlane.x+myPlane.width/2-1.5;
      let y = this.data.myPlane.y-myPlane.height/3+5;
      let bullet = new Bullet({x,y});
      // bullet.init();
      _self.data.bullet.push(bullet);
      _self.setData({bullet:_self.data.bullet});
    }, 400);

    //生成敌机
    // enemyTimer = setInterval(()=>{
    //   let x_enemy = Math.random()*global.box.x;
    //   x_enemy = Math.min(x_enemy,global.box.x-global.enemy.x);
    //   x_enemy = Math.max(x_enemy,0);
    //   let y_enemy = 0;
    //   let enemy = new Enemy({x:x_enemy,y:y_enemy});
    //   _self.data.enemy.push(enemy);
    //   _self.setData({enemy:_self.data.enemy});
    // }, 400);

     // 子弹移动
    stepBulletTimer = setInterval(()=>{
      _self.data.bullet.map((val,index,arr)=>{       
        if(val.y<-14){
          arr.splice(arr.indexOf(val), 1);
        }else{
          val.y -= 10;
        }
      });
      _self.setData({bullet:_self.data.bullet});


      // _self.data.enemyMiddle.map((val,index,arr)=>{

      //   let bool = false;
      //   _self.data.bullet.map((b,i,brr)=>{

      //     bool = _self.isBoom(
      //        {
      //          x:val.startPosition.startX,
      //          y:val.startPosition.startY
      //        },
      //        {
      //          x:val.width,
      //          y:val.height
      //        },
      //        {
      //          x:b.x,
      //          y:b.y
      //        },
      //        {
      //          x:6,
      //          y:14
      //        }
      //      )

      //     if(bool){
      //       brr.splice(brr.indexOf(b),1);
      //     }
      //     // _self.setData({bullet:_self.data.bullet});
      //   });

      //   if(bool){
      //     arr.splice(arr.indexOf(val), 1);
      //   }else if(val.startPosition.startY >global.box.y){
      //     arr.splice(arr.indexOf(val),1);
      //   }else{
      //     // val.startPosition.startY += 10;
      //   }
      // });

      // _self.data.bullet.map((val,index,arr)=>{       
      //   if(val.y<-14){
      //     arr.splice(arr.indexOf(val), 1);
      //   }else{
      //     val.y -= 10;
      //   }
      // });
      // _self.setData({bullet:_self.data.bullet});


    }, 30);

    // setInterval(()=>{
    //   count ++;

    //   if(count%2==0){


    //   _self.data.enemyMiddle.map((val,index,arr)=>{

    //     let bool = false;
    //     _self.data.bullet.map((b,i,brr)=>{

    //       bool = _self.isBoom(
    //          {
    //            x:val.startPosition.startX,
    //            y:val.startPosition.startY
    //          },
    //          {
    //            x:val.width,
    //            y:val.height
    //          },
    //          {
    //            x:b.x,
    //            y:b.y
    //          },
    //          {
    //            x:6,
    //            y:14
    //          }
    //        )

    //       if(bool){
    //         brr.splice(brr.indexOf(b),1);
    //         arr.splice(arr.indexOf(val), 1);
    //       }else
    //       if(val.y<-14){
    //         brr.splice(brr.indexOf(b), 1);
    //       }else{
    //         b.y -= 10;
    //       }
    //       //_self.setData({bullet:_self.data.bullet});
    //       // _self.setData({bullet:_self.data.bullet});
    //     });

    //     if(val.startPosition.startY >_self.maxHeight -200){
    //       arr.splice(arr.indexOf(val), 1);
    //     }else{
    //       val.startPosition.startY += 10;
    //     }





    //     _self.setData({enemyMiddle:_self.data.enemyMiddle});
    //     _self.setData({bullet:_self.data.bullet});
    //     // if(bool){
    //     //   arr.splice(arr.indexOf(val), 1);
    //     // }else if(val.startPosition.startY >global.box.y){
    //     //   arr.splice(arr.indexOf(val),1);
    //     // }else{
    //     //   // val.startPosition.startY += 10;
    //     // }
    //   });
    // }

    // }, 100)

    //敌机移动
    // stepEnemyTimer = setInterval(()=>{
    // _self.data.enemy.map((val,index,arr)=>{
    //     let boom = false
    //     stepBulletTimer = setInterval(()=>{
    //       _self.data.bullet.map((b,i,bul)=>{
    //         let bool_bullet  = _self.isBoom(val,global.enemy,b,global.bullet)
    //         if(bool_bullet){
    //           arr.splice(arr.indexOf(val), 1);
    //           bul.splice(bul.indexOf(b), 1);
    //           boom = true
    //         }else if(b.y<14){
    //           bul.splice(bul.indexOf(b),1);
    //         }else {
    //           b.y -= 10;
    //         }
    //       })
    //       _self.setData({bullet:_self.data.bullet});
    //     },30)
      
    //     if(!boom){
    //       let bool_myPlane  = _self.isBoom(val,global.enemy,this.data.myPlane,global.myPlane)
    //       if(val.y>global.box.y+global.enemy.y){
    //         arr.splice(arr.indexOf(val), 1);
    //       }else{
    //         val.y += (10) ;
    //       }
    //     }
    //     // let bool_bullet  = _self.isBoom(val,global.enemy,xxx,global.bullet)

    // });
    // _self.setData({enemy:_self.data.enemy});
    // }, 40);

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let _self = this;
    // wx.showNavigationBarLoading();
    
    // let enemyMiddle = new EnemyMiddle();
    // enemyMiddle.init();
    // enemyMiddle.exe(()=>{
     
    //   _self.data.enemyMiddle.push(1);
    //   _self.setData({
    //     enemyMiddle:_self.data.enemyMiddle
    //   })
    // });

    this.data.playing = options.playing

    myPlane.exe();
    this.getClientRect('#box',res=>{
      global.box={
        x:res[0].width,
        y:res[0].height
      }
    });

    this.getClientRect('#enemy',res=>{
      console.log(res);
      global.enemy={
        x:res[0].width,
        y:res[0].height
      }
    });
    // this.getClientRect('#enemy-middle',res=>{
    //   console.log(res);
    //   global.enemyMiddle={
    //     x:res[0].width,
    //     y:res[0].height
    //   }
    // });


    let enemyMiddle = new EnemyMiddle();
    enemyMiddle.create(this);
    enemyMiddle.step(this);
    // enemyMiddle.init();
    // enemyMiddle.exe(()=>{
    //   let enemyMiddle = new EnemyMiddle({x:global.enemyMiddle.x,y:global.enemyMiddle.y});
    //   let x_enemy = Math.random()*global.box.x;
    //      x_enemy = Math.min(x_enemy,global.box.x-enemyMiddle.x);
    //      x_enemy = Math.max(x_enemy,0);
    //      let y_enemy = 0;
    //      let enemy = new Enemy({x:x_enemy,y:y_enemy});
    //      _self.data.enemy.push(enemy);
    //      _self.setData({enemy:_self.data.enemy});
    //   _self.data.enemyMiddle.push(1);
    //   _self.setData({
    //     enemyMiddle:_self.data.enemyMiddle
    //   })
    // });


    this.action.call(this);
  },
  isBoom(objP,objS,otherP,otherS){
    // let top1 = objP.y,
    //     bottom1 = objP.y+objS.y,
    //     left1 = objP.x,
    //     right1 = objS.x+objP.x;
    // let top2 = otherP.y,
    //     bottom2 = otherP.y+otherS.y,
    //     left2 = otherP.x,
    //     right2 = otherS.x+otherP.x;
    // let bool = !(top1<bottom2 || bottom1 >top2 || left1>right2 || right1<left1);
    let  x1 = objP.x,
         x2 = otherS.x,
         w1 = objS.x ,
         w2 = otherS.x,
         y1 = objP.y,
         y2 = otherS.y,
         h1 = objS.y,
         h2 = otherS.y;

        
        if (x1 >= x2 && x1 >= x2 + w2) {  
             return false;  
         } else if (x1 <= x2 && x1 + w1 <= x2) {  
             return false;  
         } else if (y1 >= y2 && y1 >= y2 + h2) {  
             return false;  
         } else if (y1 <= y2 && y1 + h1 <= y2) {  
             return false;  
         }  
         return true;   
    // console.log(bool)
    // return bool;

  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //this.getRect(0,)
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    wx.hideNavigationBarLoading();
    timer && clearInterval(timer);
    bulletTimer     && clearInterval(bulletTimer    );
    enemyTimer      && clearInterval(enemyTimer     );
    stepBulletTimer && clearInterval(stepBulletTimer);
    stepEnemyTimer  && clearInterval(stepEnemyTimer );
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  },

})